In the art of mass data storage, it is to be expected that occasionally stored data becomes corrupt on the medium on which it is stored. The read mechanism then becomes unable to retrieve the data from the storage device. Reasons for data becoming corrupt include irregularities in the physical medium on which the data is stored, loss of correspondence between the write mechanism and the read mechanism, or exposure of the data as stored on the medium to adverse environmental conditions. Whatever the reason for the data becoming corrupt, steps must be taken to try to recover the data or else it is lost.
A standard data recovery technique is store the data with a periodic Error Correction Code ("ECC"). The ECC is derived from a predetermined algorithm, in which actual stored data values in the data group to which the ECC pertains are used as the values of variables in the algorithm. The result of the algorithm is the ECC for the data group to which the ECC pertains, and, as noted, the ECC is physically stored on the storage medium in association with the data group. Then, where a portion of the data group is detected to be corrupt, the value of the ECC can be "reversed" back through the algorithm to recover the lost data values to a limited extent.
The extent to which a standard data recovery technique such as ECC can universally recover corrupt data depends on the sophistication of the underlying algorithm and how badly the data is corrupt. The ability of standard data recovery techniques such as ECC to recover data is therefore limited.
"Heroic" data recovery techniques are resorted to in the recovery of stored data when the level of data corruption is too great for standard techniques such as ECC to work. Hence the term "heroic", which for purposes of this disclosure means measures above and beyond standard data recovery techniques such as ECC. Examples of these "heroic" techniques include:
re-positioning of the read sensor from the original/nominal location;
modification of read channel characteristics (read bias, filter boost, etc.); and
re-tensioning of the tape (in the case of tape data storage).
Data is generally stored in blocks of a specific, predetermined size. ECC is typically then implemented on a frame basis, a frame being simply a predetermined logical set of data blocks. Error detection and correction during read operations commonly uses a Cyclic Redundancy Check (CRC) at the block level to detect blocks which were incorrectly read from the storage medium. Heroic data recovery operations traditionally are also performed at the block level, so that when CRC detects a corrupt block, heroic operations can be performed on each sequential corrupt block, one block at a time, in the heroic data recovery process.
An inconsistency in traditional data recovery approaches has therefore always been present in that standard techniques such as ECC are done on a frame basis, while heroic data techniques are done on a block basis. Even though only one or two blocks may be detected in error, an entire frame has to be isolated in order to attempt standard data recovery using ECC. If ECC is unsuccessful, and heroic techniques are required, the frame must then be broken back down into blocks to allow heroic recovery on the traditional block-by-block basis. Considerable data processing and physical movement of the read mechanism would be saved if heroic recovery could be done on a frame basis. There is therefore a need in the art to perform heroic data recovery on a frame basis.